home *** CD-ROM | disk | FTP | other *** search
- class quick {
- attribute:
- private int[50] list = $[50];
- int[50] ilist = $[50]{27,74,17,33,94,18,46,83,65, 2,
- 32,53,28,85,99,47,28,82, 6,11,
- 55,29,39,81,90,37,10, 0,66,51,
- 7,21,85,27,31,63,75, 4,95,99,
- 11,28,61,74,18,92,40,53,59, 8};
- int i,j,v;
- method:
- public main ().
- private loop (int J).
- init (int I).
- sort (int L,R).
- while (int I,J).
- repeat (int I).
- more (int J).
- swap (int X,Y,?Y1,?X1).
- }
-
- quick {
- main() |- loop(10000).
-
- loop(0).
- loop(J') |- init(49); sort(0,49); loop(J-1).
-
- init(0) |- (int) list[0]' = ilist[0].
- init(I') |- (int) list[I]' = ilist[I]; init(I-1).
-
- sort(L',R') :- L>=R.
- sort(L',R') :- (int) v' = list[L];
- while(L,R+1).
- sort(L',R') |- (int) J' = j;
- (int) T' = list[i];
- (int) list[i]' = list[J];
- (int) list[J]' = list[L];
- (int) list[L]' = T;
- sort(L,J-1);
- sort(J+1,R).
-
- while(I',J') :-repeat(I);
- more(J);
- swap(list[i],list[j],list[i]',list[j]');
- j>i |- while(i,j).
-
- repeat(I') :- list[I+1]<v |- repeat(I+1).
- repeat(I') |- (int) i' = I+1.
- more(J') :- list[J-1]>v |- more(J-1).
- more(J') |- (int) j' = J-1.
- swap(X',Y',Y,X).
- }
-